require('./index.scss');
var Tool = require('common/tool');
var uploadPreview = require('common/uploadPreview');
require('comp/tab');
require('comp/dialog');
var depositPage ;

var vm = avalon.define({
    $id: 'remit',
    lang: _language=='zh' ? 'CN':'TW',
    step:1,                                     // 1 第一步 填写存款信息  2 第二步 确认存款信息
    tabList:{
        active:1,
        list:[{
            "text":"网上存款",
            "id":"1",
            "href":"#/deposit/index"
        },{
            "text":"银行汇款",
            "id":"2",
            "href":"#/deposit/remit"
        }],
        switchFn(_index){
            console.log(_index);
        }
    },
    dialog:{
        display:"none",
        title: '选择银行',
        desc:'请选择网银支付的银行<span class="danger">（需开通网银，本公司不接受信用卡存款）</span> ：',
        checkBank:"",                                //选中的银行
        inputAccountNumber:"",                       //输入的银行卡号
        close(){
            console.log('log');
        },
        solve(){
            console.log('this',this);
            if( !this.checkBank ){
                layer.alert('请选择银行');
                return false;
            }
            this.display = 'none';
            //切换银行后重新加载支付方式
            // if( vm.depositBank.bank !== this.checkBank.bank ) depositPage.queryPayMethod(this.checkBank.bank);
            vm.depositBank = avalon.mix({},this.checkBank);
            if( !this.checkBank.bankAccountNumber ){
                vm.depositBank.bankAccountNumber = this.inputAccountNumber;
            }
        }
    },
    confirmDialog:{
        display:"none",
        className:"confirmDialog",                       // 弹窗样式
        hideClose:true,
    },
    /* 选择银行单据的图片 */
    checkFile:function(e){
        console.log('checkFile',this,e);
        ajaxFileUpload();
    },
    dialogDisplay:'none',
    queryLoad:true,                                     // 进入页面时的加载效果   
    fundProposalNum:'',                                 // 汇款申请未完成个数
    depositPlatform:'',                                 // 汇款平台
    accountInfo:'',                                     // 账号信息

    selAccount:'',                                      // 选中的存款账号
    selBank:'',                                         // 选中的公司收款银行
    selDepositBank:'',                                  // 选中的客户汇款银行
    selCurrency:'',                                     // 选中的汇款币种

    accTradeInfoList:'',                                // 汇款账号列表
    remittanceBank:'',                                  // 公司收款银行
    bankList:'',                                        // 客户汇款银行列表
    bankCurrency:'',                                    // 币种
    currencyName : '',                                  // 美元或人名币
    depositLoad  : '',                                  // 加载效果
    fee:'',                                             // 费率
    agreeClause:false,                                  // 是否勾选条款
    dataParams:{
        bank:'',                                        // 选中的银行汇款银行
        callDepositBank:'',                             // 选中的客户汇款银行
        transCurrency:'',                               //选中的币种
        depositCurrency:'',                             //选中的账户币种
        platform:'',                                    //选中的平台
        tranDate :'',                                   // 汇款日期
        remark:'',                                      //备注
        amount :'',                                     // 汇款金额
        depositFilePath:false,                          // 银行单据文件路径
        depositFileName:false                           // 银行单据文件名称
    },
    uploading:false,                                    // 上传图片loading
    /* 校验输入金额 */
    amountInput:function(e){
        if(!e.target.value) return;
        var _val = e.target.value,
            _reg = /^\d*\.?\d{0,2}/,
            str = _val.match(_reg);
        setTimeout(function(){
            vm.dataParams.amount = str ? str[0] : '';
        },0);
    },
    nextClick:function(){
        if( vm.dataParams.amount=='' ){
            layer.alert('请输入汇款金额');
            return false;
        }else if(vm.dataParams.tranDate==''){
            layer.alert('请选择汇款日期');
            return false;
        }else if(vm.dataParams.depositFilePath==''){
            layer.alert('请上传单据');
            return false;
        }
        depositPage.depositCheckAjax();
    },
    submitfn:function(){
        depositPage.depositSubmitAjax();
    },
    /** 切换 select 下拉列表
     *  @param {Array} _list  数据列表
     *  @param {String} _duplex  select双向数据绑定的字段
     *  @param {String} _key  _list列表里面用于和_duplex进行比较的字段名称
     *  @param {String} _sel  当前选中的_list列表某一组数据
     */
    changeSelect:function(_list, _duplex, _key, _sel){
        setTimeout(function(){
            vm[_list].forEach(function(v,i){
                if(v[_key] == vm.dataParams[_duplex]){
                    vm[_sel] = v;
                    return false;
                }
            });
        },0);
    }
});

vm.$watch('onReady',function(){
    depositPage = new Deposit();
    window['vm'] = vm;

    $("#uploadForm").on('change','#tranStatement', function(e){
        console.log('checkFile',this,e);
        ajaxFileUpload();
        depositPage.previewImg();
    });
});

function Deposit(){
    this.queryDeposit();
    this.queryDict();
    this.fundProposal();
    this.previewImg();
}

// 获取存款页面信息
Deposit.prototype.queryDeposit = function(){
    var that = this;
    vm.queryLoad = true;
    Tool.ajax({
        url: '/fundDepositOnline',
        type:"post"
    }).done(function(res){
        vm.queryLoad = false;

        var data = res.data,
            validateFile = data.validateFile,
            accTradeInfoList = data.accountInfo.accTradeInfoList,
            uploadList = [];
        if(!validateFile){
            stateman.go('account.infofiles');
            return false;
        }

        vm.accountInfo = data.accountInfo;          //存款账号列表
        vm.accTradeInfoList = accTradeInfoList;    //存款账号列表
        if( accTradeInfoList && accTradeInfoList.length>0 ){
            vm.selAccount = accTradeInfoList[0];
            vm.currencyName = accTradeInfoList[0].currencyName;                            //美元或人名币
            vm.dataParams.depositCurrency = accTradeInfoList[0].currency;                  //美元或人名币 code
            vm.dataParams.platform = accTradeInfoList[0].platform;                         //存款平台
        }
        vm.dataParams.tranDate = data.tranDate;
    });
}

// 获取数据字典配置接口
Deposit.prototype.queryDict = function(){
    var that = this;
    Tool.ajax({
        url: '/getDictConfigInfo',
        data:{
            dictCode:"BankCurrency,RemittanceBank,listBankList"
        },
        type:"post"
    }).done(function(res){

        var data = res.data;

        vm.remittanceBank = data.RemittanceBank;    //公司收款银行
        vm.bankList = data.listBankList;            //客户汇款银行
        vm.bankCurrency = data.BankCurrency;        //币种

        vm.selBank = data.RemittanceBank[0];
        vm.selDepositBank = data.listBankList[0];
        vm.selCurrency = data.BankCurrency[0];

        vm.dataParams.callDepositBank = data.RemittanceBank[0].code;
        vm.dataParams.bank = data.listBankList[0].code;
        vm.dataParams.transCurrency = data.BankCurrency[0].code;
    });
}

//存取款提案接口
Deposit.prototype.fundProposal = function(_bank){
    Tool.ajax({
        url: '/fundProposal',
        data:{
            operType:'bankPayment'
        },
        type:"post"
    }).done(function(res){

        var data = res.data;
        vm.fundProposalNum =data.bankPaymentProposalNum;
    });
}

//網上存款数据验证 
Deposit.prototype.depositCheckAjax = function(){
    vm.depositLoad = true;
    var _params = avalon.mix({}, vm.dataParams.$model);
    delete _params.depositFilePath;
    delete _params.depositFileName;
    Tool.ajax({
        url: '/bankRemittanceDataValidate',
        data:_params,
        type:"post"
    }).done(function(res){
        vm.depositLoad = false;

        vm.step = 2;
    });
}

//网上汇款提交
Deposit.prototype.depositSubmitAjax = function(){
    vm.depositLoad = true;
    Tool.ajax({
        url: '/depositSubmit',
        data:vm.dataParams.$model,
        type:"post"
    }).done(function(res){
        vm.depositLoad = false;

        var data = res.data;
        var msg = '<p>存款通知提交成功！</p>';
            msg += '<p>申请编号：'+data.pno+'</p>';
        layer.open({
            title: '成功',
            closeBtn:false,
            content: msg,
            yes:function(index){
                location.reload();
                layer.close(index);
                layer.load(1);
            }
        }); 
    });
}
/* 预览图片 */
Deposit.prototype.previewImg = function(){
    new uploadPreview({ 
        UpBtn: "tranStatement", 
        DivShow: "uploadImgBox", 
        ImgShow: "uploadImg" 
    });
}
/* 上传 */
function ajaxFileUpload(){
    vm.uploading = true;
    $.ajaxFileUpload({
        url : '/api/uploadBankTran.do',         //请求url  
        secureuri : false,                      // 是否需要安全协议，一般设置为false
        fileElementId : ['tranStatement'],      // 文件上传域的ID
        dataType : 'text',                      // 返回值类型
        success : function(res){                // 服务器成功响应处理函数
            console.log('res',res, typeof res);
            var res = eval("("+res+")");
            var msg = res.code=='0' ? '上传成功！' : res.msg,
                data = res.data;
            vm.dataParams.depositFileName = res.depositFileName;
            vm.dataParams.depositFilePath = res.depositFilePath;
            vm.uploading = false;
        },
        error : function(){// 服务器响应失败处理函数
            vm.uploading = false;
            layer.alert('上传失败');
        }
    })
}







